package com.ndp.fb.rdb.api;

import com.ndp.fb.rdb.model.ProductCatalog;
import com.ndp.fb.rdb.model.ProductWeFeedCatalog;
import com.ndp.fb.rdb.model.product.*;

import java.util.List;

/**
 * Created by Evan on 2016/4/19.
 */
public interface ProductCatalogRdbService {

    //保存wefeed-catalog多对多关系表
    Long saveWeFeedCatalog(ProductWeFeedCatalog productWeFeedCatalog);

    Long saveCatalog(ProductCatalog productCatalog);

    void updateStatus(Long productCatalogId, String status);

    void updateNoproduct(Long productCatalogId, String status);

    //更新产品目录被物料模板占用
    void updateTemplateMaterielId(Long productCatalogId, Long ecTemplateMaterielId);

    void updateStatusByWeFeedId(Long weFeedId, String status);

    //wefeed下 取所有catalog 得到拉取的被影响的产品数
    List<ProductCatalogStatusCheck> findHasErrorProductCnt(Long weFeedId);

    List<ProductCatalogStatusCheckResult> findOverview(Long weFeedId);
    List<ProductCatalog> findProductCatalogs(Long weFeedId);

    List<ProductCatalogFbFeed> findProductCatalogsAndFbFeed(Long weFeedId);

    //批量插入产品目录xml 校验表
    void batchInsertToCheck(List<ProductCatalogStatusCheck> list, Long productCatalogId);

    void deleteCheck(Long productCatalogId);

    //查询物料占用的
    List<FeedWeWithMateriel> findUsedAndCanUse(List<Long> weFeedIds);


    void updateFbFeed(Long fbFeedId, String url);

    ProductCatalog  findByWeFeedIdAndEcTemplateMaterielId(Long weFeedId, Long ecTemplateMaterielId);


    ProductCatalogFbFeed findByFbCatalogId(Long catalogId);

    Boolean deleteByProductCatalogIds(List<Long> catalogIds);


    List<ProductCatalog> findByWeFeedIdNot(Long feedId, Long orgId);

    //产品目录一次更新的失败次数
    Integer findOneUpdateFailCnt(Long catalogId);

    //产品目录开始更新  重置失败为0
    void updateOneUpdateBegin(Long catalogId);

    //产品目录失败次数加1
    void updateOneUpdatePlus(Long catalogId);
}
